package io.gitee.wiqer.simple;

/**
 * 描述
 * 在不使用额外的内存空间的条件下判断一个整数是否是回文。
 * 回文指逆序和正序完全相同。
 *
 *
 * 数据范围：-2^{31} \le n \le 2^{31}-1−2
 * 31
 *  ≤n≤2
 * 31
 *  −1
 * 进阶： 空间复杂度 O(1)O(1)，时间复杂度 O(len(n))O(len(n))
 *
 * 提示：
 * 负整数可以是回文吗？（比如-1）
 * 如果你在考虑将数字转化为字符串的话，请注意一下不能使用额外空间的限制
 * 你可以将整数翻转。但是，如果你做过题目“反转数字”，你会知道将整数翻转可能会出现溢出的情况，你怎么处理这个问题？
 */
public class SolutionNC_IsPalindrome {
    /**
     *解法一：退化问题
     * @param x int整型
     * @return bool布尔型
     */
    public boolean isPalindrome (int x) {
        // write code here
        if (x < 0) {
            return false;
        }
        String s = String.valueOf(x);
        for (int i = 0; i <= s.length() / 2; i++) {
            if (s.charAt(i) != s.charAt(s.length()- i - 1)) {
                return false;
            }
        }
        return true;
    }
    /**
     *解法二：翻转数字
     * 将x翻转为result，然后比较大小
     * @param x int整型
     * @return bool布尔型
     */
    public boolean isPalindrome_Number (int x) {
        // write code here
        if(x < 0) return false;
        int result = 0;
        int temp = x;
        while (temp > 0) {
            result = result * 10 + temp % 10;
            temp = temp / 10;
        }
        return x == result;
    }
}
